﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entities;
namespace IRepository
{
    public interface IUserRoleRepository
    {
        /// <summary>
        /// 判断用户与角色的直接关系是否存在
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <param name="roleID">角色ID</param>
        /// <returns>true:关系存在；false:关系不存在</returns>
         bool Exits(string userID, string roleID);
        /// <summary>
        /// 得到和某角色具有直接关系的所有用户
        /// </summary>
        /// <param name="roleID">角色ID</param>
        /// <returns>用户集合</returns>
         IEnumerable<Entities.User> GetUsersByRoleID(string roleID);
        /// <summary>
        ///得到与某角色没有直接关系的所有用户 
        /// </summary>
        /// <param name="roleID">角色ID</param>
        /// <returns>用户集合</returns>
         IEnumerable<Entities.User> GetUsersNotInRole(string roleID);
        /// <summary>
        /// 得到与某用户具有直接关系的角色
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <returns>角色集合</returns>
         IEnumerable<Entities.Role> GetRolesByUserID(string userID);
        /// <summary>
        /// 得到与某用户没有直接关系的所有角色
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <returns>角色集合</returns>
         IEnumerable<Entities.Role> GetRolesNotInUser(string userID);
        /// <summary>
        /// 删除用户与角色的直接关系
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <param name="roleID">角色ID</param>
        /// <returns>true:删除成功；false:删除失败</returns>
         bool Delete(string userID, string roleID);
        /// <summary>
        /// 添加用户与角色的直接关系
        /// </summary>
        /// <param name="userRole">用户角色关系</param>
        /// <returns>true:添加成功；false:添加失败</returns>
         bool Add(UserRole userRole);
        /// <summary>
        /// 删除用户角色关系（一个用户多个角色一起删除）
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <param name="listRoleID">角色ID集合</param>
        /// <returns>true:删除成功；false:删除失败</returns>
         bool DeleteByUserAndRoles(string userID, List<string> listRoleID);
        /// <summary>
        /// 删除用户角色关系（一个角色多个用户一起删除）
        /// </summary>
        /// <param name="roleID">角色ID</param>
        /// <param name="listUserID">用户ID集合</param>
        /// <returns>true:删除成功；false:删除失败</returns>
         bool DeleteByRoleAndUsers(string roleID, List<string> listUserID);
    }
}
